// consult.js
const request = require('../../utils/request')

Page({
  data: {
    // 医生列表
    doctors: [],
    // 是否正在加载数据
    loading: false,
    // 搜索关键词
    keyword: '',
    // 科室列表（固定）
    departments: [
      { id: '内科', name: '内科' },
      { id: '外科', name: '外科' },
      { id: '妇产科', name: '妇产科' },
      { id: '儿科', name: '儿科' },
      { id: '皮肤科', name: '皮肤科' },
      { id: '口腔科', name: '口腔科' },
      { id: '眼科', name: '眼科' },
      { id: '耳鼻喉科', name: '耳鼻喉' },
      { id: '精神科', name: '精神科' },
      { id: '中医科', name: '中医科' },
      { id: '急诊科', name: '急诊科' },
      { id: '康复科', name: '康复科' }
    ],
    // 当前选中的科室
    currentDept: null,
    // 是否显示科室下拉菜单
    deptMenuOpen: false,
    // 医生详情弹窗
    showDoctorModal: false,
    // 当前选中的医生
    currentDoctor: null
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    // 获取医生列表
    this.getDoctorList()
  },

  /**
   * 获取医生列表
   */
  getDoctorList() {
    this.setData({ loading: true })
    
    const params = {}
    
    // 如果有搜索关键词，添加到参数
    if (this.data.keyword) {
      params.key = this.data.keyword
    }
    
    // 如果选择了特定科室，添加科室参数
    if (this.data.currentDept) {
      params.kezhen = this.data.currentDept.id
    }
    
    console.log('查询参数:', params)
    
    // 请求医生列表接口
    request.get('/student/doctor/getInfo', params, true)
      .then(res => {
        this.setData({ loading: false })
        
        if (res.code === 0 && res.data) {
          // 获取医生列表成功
          const doctors = res.data;
          console.log('获取到医生数据:', doctors)
          
          // 过滤掉没有医生姓名的数据并格式化数据
          const formattedDoctors = doctors.filter(doctor => 
            doctor.doctorname || (doctor.username && doctor.username !== 'admin')
          ).map(doctor => ({
            id: doctor.id,
            name: doctor.doctorname || doctor.username,
            username: doctor.username,
            avatar: doctor.image,
            deptName: doctor.kezhen || '未分类',
            hospitalName: doctor.hospital || '未知医院',
            introduction: doctor.content || '',
            email: doctor.email || '',
            phone: doctor.phone || '',
            address: doctor.address || '',
            sex: doctor.sex || '',
            status: doctor.state === 1 ? 1 : 0
          }));
          
          this.setData({
            doctors: formattedDoctors
          })
          console.log('格式化后的医生数据:', formattedDoctors)
        } else {
          wx.showToast({
            title: res.message || '获取医生列表失败',
            icon: 'none'
          })
          this.setData({
            doctors: []
          })
        }
      })
      .catch(err => {
        console.error('获取医生列表失败', err)
        this.setData({ 
          loading: false,
          doctors: []
        })
        wx.showToast({
          title: '获取医生列表失败',
          icon: 'none'
        })
      })
  },

  /**
   * 选择科室
   */
  selectDept(e) {
    try {
      const dept = e.currentTarget.dataset.dept
      console.log('选择科室:', dept)
      
      this.setData({
        currentDept: dept,
        deptMenuOpen: false
      }, () => {
        // 切换科室后重新获取医生列表
        this.getDoctorList()
      })
    } catch (error) {
      console.error('选择科室出错:', error)
      wx.showToast({
        title: '选择科室失败',
        icon: 'none'
      })
    }
  },

  /**
   * 显示或隐藏科室下拉菜单
   */
  toggleDeptMenu() {
    console.log('切换科室菜单显示状态')
    this.setData({
      deptMenuOpen: !this.data.deptMenuOpen
    })
  },

  /**
   * 搜索框输入
   */
  inputSearch(e) {
    this.setData({
      keyword: e.detail.value
    })
  },

  /**
   * 执行搜索
   */
  searchDoctor() {
    console.log('执行搜索:', this.data.keyword)
    this.setData({
      deptMenuOpen: false
    })
    this.getDoctorList()
  },

  /**
   * 清空搜索
   */
  clearSearch() {
    if (this.data.keyword) {
      console.log('清空搜索')
      this.setData({
        keyword: ''
      }, () => {
        this.getDoctorList()
      })
    }
  },
  
  /**
   * 查看医生详情
   */
  viewDoctorDetail(e) {
    const doctorId = e.currentTarget.dataset.id
    console.log('查看医生详情:', doctorId)
    const doctor = this.data.doctors.find(item => item.id === doctorId)
    
    if (doctor) {
      this.setData({
        currentDoctor: doctor,
        showDoctorModal: true
      })
    }
  },
  
  /**
   * 关闭医生详情弹窗
   */
  closeDoctorModal() {
    console.log('关闭医生详情弹窗')
    this.setData({
      showDoctorModal: false
    })
  },

  /**
   * 开始咨询
   */
  consultDoctor(e) {
    const doctorId = e.currentTarget.dataset.id
    console.log('开始咨询医生:', doctorId)
    
    // 判断是否已登录
    const token = wx.getStorageSync('token')
    if (!token) {
      wx.showModal({
        title: '提示',
        content: '请先登录后再进行咨询',
        confirmText: '去登录',
        success: (res) => {
          if (res.confirm) {
            wx.navigateTo({
              url: '/pages/login/login'
            })
          }
        }
      })
      return
    }
    
    // 查找当前选择的医生
    let doctor
    if (this.data.showDoctorModal && this.data.currentDoctor) {
      // 如果是从医生详情弹窗点击的
      doctor = this.data.currentDoctor
    } else {
      // 从列表点击的
      doctor = this.data.doctors.find(item => item.id === doctorId)
    }
    
    if (!doctor) {
      wx.showToast({
        title: '未找到医生信息',
        icon: 'none'
      })
      return
    }
    
    // 跳转到留言页面，确保使用正确的ID
    console.log('跳转到留言页面，医生:', doctor)
    wx.navigateTo({
      url: `/pages/message/message?doctorId=${doctor.id}`
    })
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 如果从登录页返回，可能需要重新加载数据
    const token = wx.getStorageSync('token')
    if (token && this.data.doctors.length === 0) {
      this.getDoctorList()
    }
  },

  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    this.setData({
      deptMenuOpen: false
    })
    this.getDoctorList()
    wx.stopPullDownRefresh()
  }
}) 